import createApp from './create-app'

export default context => {
    return new Promise((reslove, reject) => {
        const { app, router } = createApp()
        // router.push就是给路由推一条记录，只有主动的调用router.push才会执行这部分代码，匹配到要调用的这些组件
        router.push(context.url)
        // 在一个路由记录被推进去以后，它所有的异步的操作(比如在路由里异步加载组件的操作)，再所有的异步操作都做完了以后，它才会调用这个函数
        // router的这个onReady 和 getMatchedComponents 服务端渲染才用
        router.onReady(() => {
            const matchedComponents = router.getMatchedComponents()
            if(!matchedComponents.length) {
                return reject(new Error('no component matched'))
            }
            reslove(app)
        })
    })
}